<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="text"/>

	<xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> 
	<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
	
	<xsl:template match="data">
		<xsl:apply-templates select="class/name"/>
	</xsl:template>

	<xsl:template match="name">
		<xsl:param name="id"/>

		<xsl:text>%=============================================
</xsl:text>
		<xsl:text>% UNIT TEST CASES - CLASS </xsl:text>
		<xsl:value-of select="translate(., $smallcase, $uppercase)" /> 
		<xsl:text>
</xsl:text>
		<xsl:text>%=============================================

</xsl:text>
		<xsl:text>\subsubsection{Test cases for the </xsl:text>
		<xsl:value-of select="."/>
		<xsl:text> class}
</xsl:text>
		<xsl:apply-templates select="../tests/test[@type='normal']">
			<xsl:with-param name="id" select="@id"/>
		</xsl:apply-templates>
	</xsl:template>

	<xsl:template match="test">
		<xsl:param name="id"/>

		<xsl:text>\noindent

</xsl:text>
		<xsl:text>%=============================================
</xsl:text>
		<xsl:text>% TEST CASE: </xsl:text>
		<xsl:value-of select="name"/>
		<xsl:text>
</xsl:text>
		<xsl:text>%=============================================

</xsl:text>
		<xsl:text>\textbf{\textit{</xsl:text>
		<xsl:value-of select="name"/>
		<xsl:text>}}\\
</xsl:text>
		<xsl:text>{\bf Purpose}\\
</xsl:text>
		<xsl:value-of select="purpose"/>
		<xsl:text>\\
</xsl:text>
		<xsl:text>{\bf Expected outcome}\\
</xsl:text>
		<xsl:value-of select="outcome"/>
		<xsl:text>\\
</xsl:text>
		<xsl:text>\begin{longtable}{| l | l | l | } 
</xsl:text>
		<xsl:text>\caption{List of test cases for </xsl:text>
		<xsl:value-of select="name"/>
		<xsl:text>} \label{tab:tc_</xsl:text>
		<xsl:value-of select="$id"/>
		<xsl:text>_</xsl:text>
		<xsl:value-of select="name"/>
		<xsl:text>} \\
</xsl:text>
		<xsl:text>\hline
</xsl:text>
		<xsl:text>\textbf{ID} &amp; \textbf{Test method} &amp; \textbf{Status}\\
</xsl:text>
		<xsl:text>\hline
</xsl:text>
		<xsl:text>\endfirsthead
</xsl:text>
		<xsl:text>\hline
</xsl:text>
		<xsl:text>\textbf{ID} &amp; \textbf{Test method} &amp; \textbf{Status}\\
</xsl:text>
		<xsl:text>\endhead
</xsl:text>
		<xsl:text>\hline
</xsl:text>
		<xsl:apply-templates select="method">
			<xsl:with-param name="id" select="$id"/>
		</xsl:apply-templates>
		<xsl:text>\end{longtable}
</xsl:text>
	</xsl:template>

	<xsl:template match="method">
		<xsl:param name="id"/>
		<xsl:text>tc\textunderscore </xsl:text>
		<xsl:value-of select="$id"/>
		<xsl:text>\textunderscore \arabic{test_case_counter}</xsl:text>
		<xsl:text> &amp; </xsl:text>
		<xsl:value-of select="."/>
		<xsl:text> &amp; pass \stepcounter{test_case_counter}\\
</xsl:text>
		<xsl:text>\hline
</xsl:text>
	</xsl:template>

</xsl:stylesheet>
